package com.vcit.common.core.domain.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.vcit.common.annotation.Excel;
import com.vcit.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import javax.validation.constraints.Size;
import java.util.Date;

/**
 * 学生对象 t_student
 *
 * @author dff
 * @date 2025-01-17
 */
public class TStudent extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 学生id */
    private Long id;

    /** 学生学号 */
    @Excel(name = "学生学号")
    private String sno;

    /** 学生姓名 */
    @Excel(name = "学生姓名")
    private String studentName;

    /** 学生性别 */
    @Excel(name = "学生性别",readConverterExp = "0=男,1=女,2=未知")
    private String sex;

    /** 手机号码 */
    @Excel(name = "手机号码", cellType = Excel.ColumnType.TEXT)
    private String phone;

    /** 学生出生日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "学生出生日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date birthday;

    /** 邮箱 */
    @Excel(name = "邮箱")
    private String email;

    /** 家庭地址 */
    @Excel(name = "家庭地址")
    private String address;

    /** 状态 0 休学，1 在读 2 服兵役 */
    @Excel(name = "状态", readConverterExp = "0=休学,1=在读,2=服兵役")
    private Integer status;

    /** 政治面貌 */
    @Excel(name = "政治面貌",readConverterExp = "0=群众 ,1=团员, 2=预备党员, 3=党员")
    private String policalStatus;

    /** 身份证号 */
    //@Excel(name = "身份证号",cellType = Excel.ColumnType.TEXT, prompt = "请输入18位身份证号")
    @Size(min = 0, max = 18, message = "身份证号长度不能超过18个字符")
    private String idCard;

    /** 招生状态（0=报考,1=待确认,2=审核中,3 =驳回，4=审核通过，5=未录取，6=已录取，7,确认入学，8=未分班，9=已分班） */
    /** 招生状态 0 休学，1 在读 2 服兵役 */
    @Excel(name = "招生状态", readConverterExp = "0=报考,1=待确认,2=审核中,3 =驳回，4=审核通过，5=未录取，6=已录取（待确认），7=未分班（已确认），8=已分班")
    private Integer zsStatus;

    /** 名族 */
    @Excel(name = "名族")
    private String nation;

    /** 入学时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "入学时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startTerm;

    /** 毕业时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "毕业时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endTerm;

    /** 系部id */
    @Excel(name = "系部id")
    private Long deptId;

    /** 专业id */
    @Excel(name = "专业id")
    private Long majorId;

    /** 学生类型 0=高考, 1=单独招生, 2=预科,3=对口升学 */
    @Excel(name = "学生类型 0=高考, 1=单独招生, 2=预科,3=对口升学")
    private Integer studentType;

    /** 准考证号 */
    @Excel(name = "准考证号", type = Excel.Type.IMPORT)
    private String candidateNumber;
    //招生年份
    private String zsYear;



    public String getZsYear() {
        return zsYear;
    }

    public void setZsYear(String zsYear) {
        this.zsYear = zsYear;
    }

    public String getCandidateNumber() {
        return candidateNumber;
    }

    public void setCandidateNumber(String candidateNumber) {
        this.candidateNumber = candidateNumber;
    }

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }
    public void setSno(String sno)
    {
        this.sno = sno;
    }

    public String getSno()
    {
        return sno;
    }
    public void setStudentName(String studentName)
    {
        this.studentName = studentName;
    }

    public String getStudentName()
    {
        return studentName;
    }
    public void setSex(String sex)
    {
        this.sex = sex;
    }

    public String getSex()
    {
        return sex;
    }
    public void setBirthday(Date birthday)
    {
        this.birthday = birthday;
    }

    public Date getBirthday()
    {
        return birthday;
    }
    public void setEmail(String email)
    {
        this.email = email;
    }

    public String getEmail()
    {
        return email;
    }
    public void setAddress(String address)
    {
        this.address = address;
    }

    public String getAddress()
    {
        return address;
    }
    public void setStatus(Integer status)
    {
        this.status = status;
    }

    public Integer getStatus()
    {
        return status;
    }
    public void setPolicalStatus(String policalStatus)
    {
        this.policalStatus = policalStatus;
    }

    public String getPolicalStatus()
    {
        return policalStatus;
    }
    public void setNation(String nation)
    {
        this.nation = nation;
    }

    public String getNation()
    {
        return nation;
    }
    public void setStartTerm(Date startTerm)
    {
        this.startTerm = startTerm;
    }

    public Date getStartTerm()
    {
        return startTerm;
    }
    public void setEndTerm(Date endTerm)
    {
        this.endTerm = endTerm;
    }

    public Date getEndTerm()
    {
        return endTerm;
    }
    public void setDeptId(Long deptId)
    {
        this.deptId = deptId;
    }

    public Long getDeptId()
    {
        return deptId;
    }
    public void setMajorId(Long majorId)
    {
        this.majorId = majorId;
    }

    public Long getMajorId()
    {
        return majorId;
    }
    public void setStudentType(Integer studentType)
    {
        this.studentType = studentType;
    }

    public Integer getStudentType()
    {
        return studentType;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getIdCard() {
        return idCard;
    }

    public void setIdCard(String idCard) {
        this.idCard = idCard;
    }

    public Integer getZsStatus() {
        return zsStatus;
    }

    public void setZsStatus(Integer zsStatus) {
        this.zsStatus = zsStatus;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
            .append("studentId", getId())
            .append("sno", getSno())
            .append("name", getStudentName())
            .append("sex", getSex())
            .append("phone", getPhone())
            .append("birthday", getBirthday())
            .append("email", getEmail())
            .append("address", getAddress())
            .append("status", getStatus())
            .append("policalStatus", getPolicalStatus())
            .append("idCard", getIdCard())
            .append("zsStatus", getZsStatus())
            .append("nation", getNation())
            .append("startTerm", getStartTerm())
            .append("endTerm", getEndTerm())
            .append("deptId", getDeptId())
            .append("majorId", getMajorId())
            .append("studentType", getStudentType())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .append("candidateNumber", getCandidateNumber())
            .toString();
    }
}